﻿using Shop.Core.Share;
using Shop.Model.Dto.Goo;
using Shop.Model.Entity.Goo;
using Shop.Model.View.Goo;

namespace Shop.IServices;

/// <summary>
/// 商品
/// </summary>
public interface IGoodsAppService : IAppService
{
    /// <summary>
    /// 礼包列表
    /// </summary>
    /// <param name="uId"></param>
    /// <param name="dto">语言</param>
    /// <returns></returns>
    AppResult<PageModel<GiftBagVo>> GiftBag(long uId, GiftBagDto dto);

    /// <summary>
    /// 首页新品
    /// </summary>
    /// <param name="uId"></param>
    /// <param name="language"></param>
    /// <returns></returns>
    AppResult<NewGoodsVo> NewGoo(long uId, string language);

    /// <summary>
    /// 商品列表
    /// </summary>
    /// <param name="uId"></param>
    /// <param name="dto"></param>
    /// <returns></returns>
    Task<PageModel<GooListVo>> GooList(long uId, GooListDto dto);

    /// <summary>
    /// 商品详情
    /// </summary>
    /// <param name="uId"></param>
    /// <param name="dto"></param>
    /// <returns></returns>
    AppResult<GooParticularsVo> Particulars(long uId, ParticularsDto dto);

    /// <summary>
    /// 商品运费
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    Task<AppResult<CalculateDeliveryCostVo>> CalculateDeliveryCost(CalculateDeliveryCostDto dto);

    /// <summary>
    /// 商品评论
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    PageModel<ReviewVo> Review(ReviewDto dto);

    /// <summary>
    /// 商品赠送规则
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    AppResult<GiftRulesVo> GiftRules(GiftRulesDto dto);
}